Ejemplos de Estados Alternos en Expresiones de Gráfico
Estos ejemplos tratan de mostrar las mejores prácticas recomendadas en el uso de los Estados Alternos por parte de desarrolladores QlikView y/o usuarios extremadamente avanzados de QlikView. Los ejemplos están en el archivo: ‘Alternate States Functionality.qvw’
Sincronizar las Selecciones entre Estados
Se pueden emplear las siguientes expresiones en un único gráfico:
- count({$} DISTINCT [Número Factura])
- count({State1} DISTINCT [Número Factura])
- count({State2} DISTINCT [Número Factura])
Hay un problema con este método y es que el desarrollador de QlikView debe duplicar las selecciones (cuadros de lista y cuadros de selección múltiple) en cada uno de los tres estados, para que el usuario final pueda hacer las adecuadas selecciones en los diversos estados. En muchas ocasiones el desarrollador de QlikView deseará tener un conjunto común de selecciones, disponibles para los tres estados. Esto permitirá al usuario final establecer el contexto para los diversos gráficos y después hacer uso de determinadas selecciones específicas para mostrar claramente las diferencias entre los estados. Se puede emplear Análisis de Conjuntos con los estados para mantener la consistencia de determinadas selecciones en los diferentes estados.
- count({State1<Year = $::Year, Month = $::Month>} DISTINCT [Número Factura])
- count({State2<Year = $::Year, Month = $::Month>} DISTINCT [Número Factura])
El desarrollador de QlikView mantendrá las selecciones Year y Month en el Estado1 y Estado2 sincronizadas con las selecciones de Year y Month en el estado predefinido. El desarrollador de QlikView puede añadir elementos a los modificadores de conjuntos según sea necesario para poder mantener la consistencia de más archivos entre los estados.
Operadores de conjunto
Se puede hacer uso de los operadores de conjunto (+, *, -, /) con los estados. Las expresiones siguientes son válidas y contarán los números de factura distintos que están o bien en el estado predefinido o en el Estado1.
Ejemplos:
- count({$ + State1} DISTINCT [Número Factura])
cuenta los números de factura distintos en la unión del estado <predefinido> y el Estado1.
- count({1 - State1} DISTINCT [Número Factura])
cuenta los números de factura distintos que no estén en el Estado1.
- count({State1 * State2} DISTINCT [Número Factura])
cuenta los números de factura distintos que están en ambos, en la unión del estado <predefinido> y el Estado1.
Definiciones implícitas de valores de campos
Otra forma de utilizar los operadores de conjuntos es con las funciones de elementos P() y E(). Estas funciones solo están disponibles dentro de expresiones de conjuntos.
Ejemplos:
- count({$<[Invoice Number] = p({State1} [Invoice Number])>} DISTINCT [Número Factura])
Esta expresión cuenta los números de factura distintos que hay en el estado <predefinido> basándose en los posibles números de factura distintos que estén en el Estado1.
Es prácticamente equivalente a esta expresión:
- count({$<[Invoice Number] = State1::[Invoice Number]>} DISTINCT [Número Factura])
La diferencia entre ambas expresiones es que en la primera, los valores posibles de números de factura del Estado1 pasan al estado predefinido. En la segunda expresión, los valores seleccionados del Estado1 pasan al estado predefinido. Si el usuario no ha efectuado ninguna selección de números de factura en el Estado1, ningún valor de números de factura pasará al estado predefinido.
Los operadores de conjuntos con lo que mejor se combinan y utilizan es con modificadores de conjuntos. La siguiente expresión halla la intersección de los posibles números de factura del Estado1 y el Estado2 y pasa dichos valores a los números de factura del estado predefinido.
Ejemplos:
- count({$<[Invoice Number] = p({State1} [Invoice Number]) * p({State2} [Número Factura])>} DISTINCT [Número Factura])
La expresión para encontrar la intersección de los números de factura en el estado <predefinido> y Estado1 es:
- count({$<[Invoice Number] = p({$} [Número Factura]) * p({State1} [Número Factura])>} DISTINCT [Número Factura])
Esta expresión puede resultar confusa porque utiliza un estado (<predefinido> en este caso) tanto en la función de elementos como en un identificador de conjunto. Tenga en cuenta que la función de elementos p($) devuelve los valores posibles del estado predefinido. El identificador de conjunto {$} está siendo modificado por el resultado de las funciones de elementos. Cualquier selección o selecciones de facturas actualmente presente(s) en el estado predefinido son ignoradas por los valores de la intersección de las funciones de elementos.
Debería tenerse en cuenta que la expresión anterior todavía no es del todo correcta, puesto que no logra sincronizar las selecciones comunes entre ambos estados, el estado predefinido y el Estado1. A continuación una expresión que sí hará eso:
Ejemplos:
- count({$<[Invoice Number] = p({$} [Número Factura]) * p({State1<Year = $::Year, Month = $::Month>} [Número Factura])>} DISTINCT [Número Factura])
Igual que antes, el desarrollador de QlikView puede añadir campos en el modificador para mantener la consistencia en las selecciones de los diversos estados.